{#

This file is part of the Sonata package.

(c) Thomas Rabaix <thomas.rabaix@sonata-project.org>

For the full copyright and license information, please view the LICENSE
file that was distributed with this source code.

#}

<td class="sonata-ba-list-field sonata-ba-list-field-{{ field_description.type }}" objectId="{{ admin.id(object) }}"{% if field_description.option('row_align') %} style="text-align:{{ field_description.option('row_align') }}"{% endif %}>
    {% set route_name = field_description.option('route').name|default(sonata_config.getOption('default_admin_route')) %}
    {% set route_parameters = field_description.option('route').parameters|default([]) %}

    {% if
        field_description.option('identifier', false)
        and admin.hasRoute(route_name)
        and admin.hasAccess(route_name, route_name in ['show', 'edit'] ? object : null)
    %}
        <a class="sonata-link-identifier" href="{{ admin.generateObjectUrl(route_name, object, route_parameters) }}">
            {%- block field %}
                {% if field_description.option('collapse') is not null %}
                    {% set collapse = field_description.option('collapse') %}
                    <div class="sonata-readmore" {{ stimulus_controller('sonata-readmore', {
                        'collapsedHeight': collapse.height|default(40),
                        'moreText': collapse.more|default('read_more')|trans({}, 'SonataAdminBundle'),
                        'lessText': collapse.less|default('read_less')|trans({}, 'SonataAdminBundle'),
                    }) }}>
                        <div class="sonata-readmore-content" {{ stimulus_target('sonata-readmore', 'content') }}>{{ value }}</div>
                        <button type="button"
                                class="sonata-readmore-btn btn-link"
                                {{ stimulus_target('sonata-readmore', 'button') }}
                                {{ stimulus_action('sonata-readmore', 'toggle', 'click') }}></button>
                    </div>
                {% else %}
                    {{ value }}
                {% endif %}
            {% endblock -%}
        </a>
    {% else %}
        {% set is_editable = field_description.option('editable', false) and admin.hasAccess('edit', object) %}
        {% if is_editable and field_description.option('multiple', false) and value is iterable %}
            {# multiple editable field should be real multiple #}
            {# https://vitalets.github.io/x-editable/docs.html#checklist #}
            {% set x_editable_type = 'checklist' %}
        {% else %}
            {% set x_editable_type = field_description.type|sonata_xeditable_type %}
        {% endif %}

        {% if is_editable and x_editable_type %}
            {% set url = path(
                'sonata_admin_set_object_field_value',
                {
                    '_sonata_admin': admin.baseCodeRoute,
                    'context': 'list',
                    'field': field_description.name,
                    'objectId': admin.urlSafeIdentifier(object)
                } + (admin.hasRequest() ? admin.request.attributes.get('_route_params', {}) : {})
                + admin.getPersistentParameters()
                + app.request.query.all|default({})
            ) %}

            {% if field_description.type == constant('Sonata\\AdminBundle\\FieldDescription\\FieldDescriptionInterface::TYPE_DATE') and value is not empty %}
                {# it is a x-editable format https://vitalets.github.io/x-editable/docs.html#date #}
                {% set data_value = value|date('Y-m-d', options.timezone|default(null)) %}
            {% elseif field_description.type == constant('Sonata\\AdminBundle\\FieldDescription\\FieldDescriptionInterface::TYPE_BOOLEAN') and value is empty %}
                {% set data_value = 0 %}
            {% elseif field_description.type == constant('Sonata\\AdminBundle\\FieldDescription\\FieldDescriptionInterface::TYPE_ENUM') and value is not empty %}
                {% set data_value = value.value %}
            {% elseif value is iterable %}
                {% set data_value = value|json_encode %}
            {% else %}
                {% set data_value = value %}
            {% endif %}

            <span {% block field_span_attributes %}class="x-editable"
                  data-type="{{ x_editable_type }}"
                  data-value="{{ data_value }}"
                  {% if field_description.label is not same as(false) %}
                      {% if field_description.translationDomain is same as(false) %}
                          data-title="{{ field_description.label }}"
                      {% else %}
                          data-title="{{ field_description.label|trans({}, field_description.translationDomain) }}"
                      {% endif %}
                  {% endif %}
                  {% if field_description.type == constant('Sonata\\AdminBundle\\FieldDescription\\FieldDescriptionInterface::TYPE_DATE') %}
                    data-format="yyyy-mm-dd"
                  {% endif %}
                  data-pk="{{ admin.id(object) }}"
                  data-url="{{ url }}" {% endblock %}>
                {{ block('field') }}
            </span>
        {% else %}
            {{ block('field') }}
        {% endif %}
    {% endif %}
</td>
